#include "Edificio.h"

#include <glm\gtc\matrix_transform.hpp>


Edificio::Edificio(unsigned int cantPisos) :
	m_cantPisos(cantPisos)
{
}


void Edificio::init(const glm::vec3 &posFuenteLuzDireccional, std::string vertShaderFileName, std::string fragShaderFileName) {
	this->m_piso.init(posFuenteLuzDireccional, vertShaderFileName, fragShaderFileName);
}


void Edificio::setMaterial(const glm::vec3 &coefDifusion, const glm::vec3 &coefAmbiente, const glm::vec3 &coefEspecular) {
	this->m_piso.setMaterial(coefDifusion, coefAmbiente, coefEspecular);
}


void Edificio::renderizar(const glm::mat4 &matVista, const glm::mat4 &matProyeccion, const glm::mat4 &matModelo) const {
	// La altura la define los pisos
	const float altura = 3.0f;

	// Los pisos que forman el edificio
	for (unsigned int i = 0; i < this->m_cantPisos; ++i){
		glm::mat4 matModelPisos = glm::translate(matModelo, glm::vec3(0.0f, 0.0f, altura * i) );

		// Rota la escalera entre los pisos pares e impares
		if ( i % 2 == 0) this->m_piso.rotarEscaleras(false);
		else this->m_piso.rotarEscaleras(true);

		this->m_piso.renderizar(matVista, matProyeccion, matModelPisos);
	}
}

